package com.wk.controller.teacher;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.wk.pojo.Course_exam;
import com.wk.pojo.Coursetype;
import com.wk.pojo.User;
import com.wk.service.Courseservice;
import com.wk.service.Itemservice;
import com.wk.utils.PaginationConstant;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpSession;
import java.util.List;

/**
 * @program: thesis
 * @description: 管理习题库类
 * @author: 王侃
 * @create: 2020-03-26 15:56
 **/
@Controller
@RequestMapping("/tea")
public class Teaitemcontroller {
    @Autowired
    Itemservice itemservice;

    @Autowired
    Courseservice courseservice;

    //返回课程的类型
    @ModelAttribute("coursetypes")
    public List<Coursetype> coursetypes()
    {
        List<Coursetype> coursetypes=courseservice.selectbyalltype();
        return coursetypes;
    }

    //管理我的单选题习题库
    @RequestMapping("/item/myitem/radio/list")
    public String myitem_radio(Integer page, HttpSession session, Model model)
    {
        User user=(User)session.getAttribute("loginuser");
        //使用分页插件
        //        对第一次传值进行判断
        if (ObjectUtils.isEmpty(page)) {
            page = PaginationConstant.CURRENT_NUM;
        }
        //设置分页
        PageHelper.startPage(page, PaginationConstant.PAGE_SIZE);
        List<Course_exam> exams=itemservice.selectbymyitems(1,user.getId());
        PageInfo<Course_exam> pageInfo=new PageInfo<>(exams);
        model.addAttribute("pageinfo", pageInfo);
        return "teacher/item/myitem_radio";
    }

    //管理我的多选题习题库
    @RequestMapping("/item/myitem/checkbox/list")
    public String myitem_checkbox(Integer page, HttpSession session,Model model)
    {
        User user=(User)session.getAttribute("loginuser");
        //使用分页插件
        //        对第一次传值进行判断
        if (ObjectUtils.isEmpty(page)) {
            page = PaginationConstant.CURRENT_NUM;
        }
        //设置分页
        PageHelper.startPage(page, PaginationConstant.PAGE_SIZE);
        List<Course_exam> exams=itemservice.selectbymyitems(2,user.getId());
        PageInfo<Course_exam> pageInfo=new PageInfo<>(exams);
        model.addAttribute("pageinfo", pageInfo);
        return "teacher/item/myitem_checkbox";
    }

    //管理我的问答题习题库
    @RequestMapping("/item/myitem/essay/list")
    public String myitem_essay(Integer page, HttpSession session,Model model)
    {
        User user=(User)session.getAttribute("loginuser");
        //使用分页插件
        //        对第一次传值进行判断
        if (ObjectUtils.isEmpty(page)) {
            page = PaginationConstant.CURRENT_NUM;
        }
        //设置分页
        PageHelper.startPage(page, PaginationConstant.PAGE_SIZE);
        List<Course_exam> exams=itemservice.selectbymyitems(3,user.getId());
        PageInfo<Course_exam> pageInfo=new PageInfo<>(exams);
        model.addAttribute("pageinfo", pageInfo);
        return "teacher/item/myitem_essay";
    }

    //跳转到我的单选题添加界面
    @RequestMapping("/item/myitem/radio/add")
    public String myradio_add()
    {
        return "teacher/item/myitem_radio_add";
    }

    //跳转到我的多选题添加界面
    @RequestMapping("/item/myitem/checkbox/add")
    public String mycheckbox_add()
    {
        return "teacher/item/myitem_checkbox_add";
    }

    //跳转到我的问答题添加界面
    @RequestMapping("/item/myitem/essay/add")
    public String myessay_add()
    {
        return "teacher/item/myitem_essay_add";
    }

    //完成我的习题库单选题添加
    @RequestMapping("/item/myitem/radio/addsubmit")
    public String myradio_addsubmit(Course_exam exam,HttpSession session)
    {
        User user=(User)session.getAttribute("loginuser");
        //并且让这一类型的题目数量加一
        itemservice.updatebyitemtype(1);
        exam.setUser_id(user.getId());
        itemservice.insertintomyitem(exam);
        return "common/success";
    }

    //完成我的习题库多选题添加
    @RequestMapping("/item/myitem/checkbox/addsubmit")
    public String mycheckbox_addsubmit(Course_exam exam,HttpSession session)
    {
        User user=(User)session.getAttribute("loginuser");
        exam.setUser_id(user.getId());
        //并且让这一类型的题目数量加一
        itemservice.updatebyitemtype(2);
        itemservice.insertintomyitem(exam);
        return "common/success";
    }

    //完成我的习题库问答题添加
    @RequestMapping("/item/myitem/essay/addsubmit")
    public String myessay_addsubmit(Course_exam exam,HttpSession session)
    {
        User user=(User)session.getAttribute("loginuser");
        exam.setUser_id(user.getId());
        //并且让这一类型的题目数量加一
        itemservice.updatebyitemtype(3);
        itemservice.insertintomyitem(exam);
        return "common/success";
    }

    //修改选择题试题库前先显示出来,通过主键id显示课程试题
    @RequestMapping("/item/myitem/choose/updateget")
    public String myradio_update(String id,Model model,HttpSession session)
    {
        Integer ID=Integer.parseInt(id);
        Course_exam exam=courseservice.selectbyid(id);
        model.addAttribute("exam",exam);
        return "teacher/item/myitem_choose_update";
    }

    //修改选择题试题库前先显示出来,通过主键id显示课程试题
    @RequestMapping("/item/myitem/essay/updateget")
    public String myessay_update(String id,Model model,HttpSession session)
    {
        Integer ID=Integer.parseInt(id);
        Course_exam exam=courseservice.selectbyid(id);
        model.addAttribute("exam",exam);
        return "teacher/item/myitem_essay_update";
    }

    //修改选择题课程测试并且提交
    @RequestMapping("/item/myitem/choose/updatesubmit")
    public String myradio_updatesubmit(Course_exam exam)
    {
        itemservice.updatebymyitemtest(exam);
        return "common/success";
    }

    //修改问答题课程测试并且提交
    @RequestMapping("/item/myitem/essay/updatesubmit")
    public String myessay_updatesubmit(Course_exam exam)
    {
        itemservice.updatebymyitemessay(exam);
        return "common/success";
    }

    //通过主键id删除课程习题
    @RequestMapping("/item/course_test/delete")
    public String test_delete(String id)
    {
        Integer ID=Integer.parseInt(id);
        Course_exam exam=courseservice.selectbyid(id);
        //并且让该类型课程数量减一
        itemservice.deletebyitemtype(exam.getType_id());

        courseservice.deletebycoursetestid(ID);

        return "common/success";
    }
}
